
** Authors: Sara Morell & Marzia Oceno
** Title: "The Intersectional Anger Gap: "How Race and Gender Condition the Impact of Anger on Participation"
** Journal: Public Opinion Quarterly
** This file recreates the following from the paper:

*******************************CMPS 2020****************************************

clear all
set more off
use "CMPS_2020_dataset.dta"

*********************************APPENDIX****************************************

*********************
*** Table D9 ***
*********************

svyset[pweight = WEIGHT]

svy: regress electoral_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_electoral_m2", replace)

svy: regress rally_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_rally_m2", replace)

svy: regress button_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_button_m2", replace)

svy: regress volunteer_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_volunteer_m2", replace)

svy: regress donatecandparty_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_donate_m2", replace)

svy: regress voted_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_voting_m2", replace)


svy: regress electoral_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_electoral_m2", replace)

svy: regress rally_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_rally_m2", replace)


svy: regress button_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_button_m2", replace)

svy: regress volunteer_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_volunteer_m2", replace)

svy: regress donatecandparty_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_donate_m2", replace)

svy: regress voted_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_voting_m2", replace)


combomarginsplot "wm_donate_m2" "wm_volunteer_m2" "wm_button_m2" "wm_rally_m2" "wm_electoral_m2" "wm_voting_m2", ylabel(1 "Donate" 2 "Work for Cand./Party" 3 "Wear Button" 4 "Attend Rally" 5 "Electoral Participation Scale" 6 "Vote", labsize(small)) recast(scatter) x(_filenumber) horizontal scheme(plotplain) plot1opt(mcolor(gray) mlcolor(black) msymbol(D) msize(medsmall)) ci1opt(color(black) lw(.2)) xline(0, lc(red) lpattern(dash)) title("")xsize(8) ysize(6) xlabel(-.6(.2).6) xtick(-.7(.1).7) xtitle("Marginal Effect of Anger among White Men") ytitle("") name(whitemen_electoralscale_m2)

combomarginsplot "bm_donate_m2" "bm_volunteer_m2" "bm_button_m2" "bm_rally_m2" "bm_electoral_m2" "bm_voting_m2", ylabel(1 "Donate" 2 "Work for Cand./Party" 3 "Wear Button" 4 "Attend Rally" 5 "Electoral Participation Scale" 6 "Vote", labsize(small)) recast(scatter) x(_filenumber) horizontal scheme(plotplain) plot1opt(mcolor(gray) mlcolor(black) msymbol(D) msize(medsmall)) ci1opt(color(black) lw(.2)) xline(0, lc(red) lpattern(dash)) title("")xsize(8) ysize(6) xlabel(-.6(.2).6) xtick(-.7(.1).7) xtitle("Marginal Effect of Anger among Black Men") ytitle("") name(blackmen_electoralscale_m2)

gr combine whitemen_electoralscale_m2 blackmen_electoralscale_m2, rows(1) xsize(7) ysize(3) iscale(1) scheme(plotplain)


*********************
*** Table D10 ***
*********************
 
svy: regress electoral_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_electoral_m2", replace)

svy: regress rally_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_rally_m2", replace)

svy: regress button_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_button_m2", replace)

svy: regress volunteer_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_volunteer_m2", replace)

svy: regress donatecandparty_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_donate_m2", replace)

svy: regress voted_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_voting_m2", replace)


svy: regress electoral_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_electoral_m2", replace)

svy: regress rally_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_rally_m2", replace)

svy: regress button_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_button_m2", replace)

svy: regress volunteer_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_volunteer_m2", replace)

svy: regress donatecandparty_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_donate_m2", replace)

svy: regress voted_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_voting_m2", replace)


combomarginsplot "ww_donate_m2" "ww_volunteer_m2" "ww_button_m2" "ww_rally_m2" "ww_electoral_m2" "ww_voting_m2", ylabel(1 "Donate" 2 "Work for Cand./Party" 3 "Wear Button" 4 "Attend Rally" 5 "Electoral Participation Scale" 6 "Vote", labsize(small)) recast(scatter) x(_filenumber) horizontal scheme(plotplain) plot1opt(mcolor(gray) mlcolor(black) msymbol(D) msize(medsmall)) ci1opt(color(black) lw(.2)) xline(0, lc(red) lpattern(dash)) title("")xsize(8) ysize(6) xlabel(-.6(.2).6) xtick(-.7(.1).7) xtitle("Marginal Effect of Anger among White Women") ytitle("") name(whitewomen_electoralscale_m2, replace)

combomarginsplot "bw_donate_m2" "bw_volunteer_m2" "bw_button_m2" "bw_rally_m2" "bw_electoral_m2" "bw_voting_m2", ylabel(1 "Donate" 2 "Work for Cand./Party" 3 "Wear Button" 4 "Attend Rally" 5 "Electoral Participation Scale" 6 "Vote", labsize(small)) recast(scatter) x(_filenumber) horizontal scheme(plotplain) plot1opt(mcolor(gray) mlcolor(black) msymbol(D) msize(medsmall)) ci1opt(color(black) lw(.2)) xline(0, lc(red) lpattern(dash)) title("")xsize(8) ysize(6) xlabel(-.6(.2).6) xtick(-.7(.1).7) xtitle("Marginal Effect of Anger among Black Women") ytitle("") name(blackwomen_electoralscale_m2, replace)

gr combine whitewomen_electoralscale_m2 blackwomen_electoralscale_m2, rows(1) xsize(7) ysize(3) iscale(1) scheme(plotplain)

*********************
*** Table D11 ***
*********************

svy: regress nonelectoral_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_nonelectoral_m2", replace)

svy: regress protest_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_protest_m2", replace)

svy: regress petition_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_petition_m2", replace)

svy: regress post_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_post_m2", replace)

svy: regress boycott_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 1
margins, dydx(angry) saving("wm_boycott_m2", replace)


svy: regress nonelectoral_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_nonelectoral_m2", replace)

svy: regress protest_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_protest_m2", replace)

svy: regress petition_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_petition_m2", replace)

svy: regress post_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_post_m2", replace)

svy: regress boycott_m2 angry partyid ageN south working education income polint religious if gender == 0 & Race == 2
margins, dydx(angry) saving("bm_boycott_m2", replace)


combomarginsplot "wm_boycott_m2" "wm_post_m2" "wm_petition_m2" "wm_protest_m2" "wm_nonelectoral_m2", ylabel(1 "Boycott" 2 "Post Online" 3 "Sign Petition" 4 "Attend Protest" 5 "Non-Electoral Participation Scale", labsize(small)) recast(scatter) x(_filenumber) horizontal scheme(plotplain) plot1opt(mcolor(gray) mlcolor(black) msymbol(D) msize(medsmall)) ci1opt(color(black) lw(.2)) xline(0, lc(red) lpattern(dash)) title("")xsize(8) ysize(6) xlabel(-.6(.2).6) xtick(-.7(.1).7) xtitle("Marginal Effect of Anger among White Men") ytitle("") name(whitemen_nonelectoralscale_m2)

combomarginsplot "bm_boycott_m2" "bm_post_m2" "bm_petition_m2" "bm_protest_m2" "bm_nonelectoral_m2", ylabel(1 "Boycott" 2 "Post Online" 3 "Sign Petition" 4 "Attend Protest" 5 "Non-Electoral Participation Scale", labsize(small)) recast(scatter) x(_filenumber) horizontal scheme(plotplain) plot1opt(mcolor(gray) mlcolor(black) msymbol(D) msize(medsmall)) ci1opt(color(black) lw(.2)) xline(0, lc(red) lpattern(dash)) title("")xsize(8) ysize(6) xlabel(-.6(.2).6) xtick(-.7(.1).7) xtitle("Marginal Effect of Anger among Black Men") ytitle("") name(blackmen_nonelectoralscale_m2)

gr combine whitemen_nonelectoralscale_m2 blackmen_nonelectoralscale_m2, rows(1) xsize(7) ysize(3) iscale(1) scheme(plotplain)

*********************
*** Table D12 ***
*********************
 
svy: regress nonelectoral_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_nonelectoral_m2", replace)

svy: regress protest_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_protest_m2", replace)

svy: regress petition_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_petition_m2", replace)

svy: regress post_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_post_m2", replace)

svy: regress boycott_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 1
margins, dydx(angry) saving("ww_boycott_m2", replace)


svy: regress nonelectoral_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_nonelectoral_m2", replace)

svy: regress protest_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_protest_m2", replace)

svy: regress petition_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_petition_m2", replace)

svy: regress post_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_post_m2", replace)

svy: regress boycott_m2 angry partyid ageN south working education income polint religious if gender == 1 & Race == 2
margins, dydx(angry) saving("bw_boycott_m2", replace)


combomarginsplot "ww_boycott_m2" "ww_post_m2" "ww_petition_m2" "ww_protest_m2" "ww_nonelectoral_m2", ylabel(1 "Boycott" 2 "Post Online" 3 "Sign Petition" 4 "Attend Protest" 5 "Non-Electoral Participation Scale", labsize(small)) recast(scatter) x(_filenumber) horizontal scheme(plotplain) plot1opt(mcolor(gray) mlcolor(black) msymbol(D) msize(medsmall)) ci1opt(color(black) lw(.2)) xline(0, lc(red) lpattern(dash)) title("")xsize(8) ysize(6) xlabel(-.6(.2).6) xtick(-.7(.1).7) xtitle("Marginal Effect of Anger among White Women") ytitle("") name(whitewomen_nonelectoralscale_m2)

combomarginsplot "bw_boycott_m2" "bw_post_m2" "bw_petition_m2" "bw_protest_m2" "bw_nonelectoral_m2", ylabel(1 "Boycott" 2 "Post Online" 3 "Sign Petition" 4 "Attend Protest" 5 "Non-Electoral Participation Scale", labsize(small)) recast(scatter) x(_filenumber) horizontal scheme(plotplain) plot1opt(mcolor(gray) mlcolor(black) msymbol(D) msize(medsmall)) ci1opt(color(black) lw(.2)) xline(0, lc(red) lpattern(dash)) title("")xsize(8) ysize(6) xlabel(-.6(.2).6) xtick(-.7(.1).7) xtitle("Marginal Effect of Anger among Black Women") ytitle("") name(blackwomen_nonelectoralscale_m2)

gr combine whitewomen_nonelectoralscale_m2 blackwomen_nonelectoralscale_m2, rows(1) xsize(7) ysize(3) iscale(1) scheme(plotplain)

